
# 破败王者之刃例，途径搜索的雏形

def main():
    lib = Lib()

    # 当在【静息】状态接收到【刺激0】刺激，提出【想要反曲弓】目标
    lib.reflect("刺激0", "静息", "suggest", "想要反曲弓")

    lib.route("想要反曲弓", "call", "去天台寻找", "self:启动")
    lib.reflect("启动", "去天台寻找", "去天台寻找-状态2", "去天台")
    lib.reflect("到达天台", "去天台寻找-状态2", "去天台寻找-状态3", "观察")
    lib.reflect("反曲弓", "去天台寻找-状态3", "ret")
    lib.reflect("空无一物", "去天台寻找-状态3", "ret-fail")


    lib.route("想要反曲弓", "call", "去地下室寻找", "self:启动")
    lib.reflect("启动", "去地下室寻找", "去地下室寻找-状态2", "去地下室")
    lib.reflect("到达地下室", "去地下室寻找-状态2", "去天台寻找-状态3", "观察")
    lib.reflect("反曲弓", "去地下室寻找-状态3", "ret")
    lib.reflect("空无一物", "去天台寻找-状态3", "ret-fail")

    lib.reflect("完成", "静息", "得到反曲弓状态", "self:刺激0")

    lib.reflect("刺激0", "得到反曲弓状态", "suggest", "想要风暴大剑")

    lib.route("想要风暴大剑", "call", "去洗衣机寻找", "self:启动")
    lib.reflect("启动", "去洗衣机寻找", "去洗衣机寻找-状态2", "打开洗衣机观察")
    lib.reflect("风暴大剑", "去洗衣机寻找-状态2", "ret")
    lib.reflect("空无一物", "去洗衣机寻找-状态2", "ret-fail")

    lib.route("想要风暴大剑", "call", "去冰箱寻找", "self:启动")
    lib.reflect("启动", "去冰箱寻找", "去冰箱寻找-状态2", "打开冰箱观察")
    lib.reflect("风暴大剑", "去冰箱寻找-状态2", "ret")
    lib.reflect("空无一物", "去冰箱寻找-状态2", "ret-fail")


    lib.reflect("完成", "得到反曲弓状态", "得到破败状态", "说破败王者之刃")



    # ~ lib.route("想要风暴大剑", "打开洗衣机")
    # ~ lib.route("想要风暴大剑", "打开冰箱")


    test(lib, A(), time =15, speed=3)



from ai import Lib, Stater, test, Timer, Passer, EnvMesEvent
from random import random, choice

lib = Lib()

class A(Stater):
    def __init__(self):
        self.pos1 = choice(["天台", "地下室"])
        self.pos2 = choice(["洗衣机", "冰箱"])
        # ~ self.pos1 = "地下室"
        # ~ self.pos2 = "冰箱"
        self.now = None


    def reg_event(self, frame):
        frame.act_callback.append(self.reply)

        p = Passer(1)
        @p.bindend
        def f():
            # ~ print("咚")
            frame.post_event(EnvMesEvent("刺激0"))
        p.reg_event(frame)

    def reply(self, frame, e):
        a = e.tag
        if a == "观察":
            if self.now == "天台":
                if self.pos1 == "天台":
                    r = "反曲弓"
                else:
                    r = "空无一物"
            elif self.now == "地下室":
                if self.pos1 == "地下室":
                    r = "反曲弓"
                else:
                    r = "空无一物"
        elif a == "去天台":
            self.now = "天台"
            r = "到达天台"
        elif a == "去地下室":
            self.now = "地下室"
            r = "到达地下室"
        elif a == "打开洗衣机观察":
            if self.pos2 == "洗衣机":
                r = "风暴大剑"
            else:
                r = "空无一物"
        elif a == "打开冰箱观察":
            if self.pos2 == "冰箱":
                r = "风暴大剑"
            else:
                r = "空无一物"
        else:
            return

        p = Passer(1)
        @p.bindend
        def f():
            frame.post_event(EnvMesEvent(r))
        p.reg_event(frame)


main()
